Intelligent data storage utilizing one or more records

ABSTRACT

Facilitating intelligent data storage utilizing one or more records is presented herein. A system can send record requests directed to a storage medium, and receive, based on the record requests, respective records from the storage medium that have been generated by the storage medium, the respective records representing data that has been stored in a storage block of the storage medium. Further, the system can determine, based on the respective records, whether the data has changed. In an aspect, the system can send, via a replication application, the record requests directed to the storage medium—a record request of the record requests comprising an application programming interface request for the storage medium to send a bitmap comprising a bit representing whether the data has changed.

CROSS-REFERENCE TO RELATED APPLICATION

This patent application is a continuation of, and claims priority to,U.S. patent application Ser. No. 12/749,998, filed on Mar. 30, 2010, andentitled “INTELLIGENT DATA STORAGE UTILIZING ONE OR MORE RECORDS.” Theentirety of the aforementioned application is hereby incorporated byreference herein.

TECHNICAL FIELD

This disclosure relates generally to data storage including, but notlimited to, intelligent data storage utilizing one or more records.

BACKGROUND

Conventional data storage techniques rely on data backup and/orreplication solutions to recover lost data. For example, conventionalremote device(s) and/or system(s) perform replication and/or backup ofdata stored in a storage device by reading data from each storageelement of the storage device and copying the data to another remote,storage device. In another example, conventional device(s) and/orsystem(s) copy the data to the remote storage device via a network, suchas a local area network or a wide area network.

In yet another example, conventional data storage techniques copy thedata to the remote storage device based on whether the data has changed.Such techniques determine whether the data has changed, e.g., byremotely computing a signature of data of each storage element of thestorage device utilizing one or more algorithms, and copying the data ofthe storage element to the remote storage device if the signature of thedata has changed.

One concern with conventional data storage techniques is that datathroughput of a storage device, and/or an associated interface coupledto the storage device, limits a rate at which the storage device isbacked-up and/or replicated, i.e., via the associated interface. Underideal data throughput conditions, data can be moved from a large storagedevice to a remote storage device, e.g., via a wide area network, at arate of 10 Gbits/sec; however, under non-ideal data throughputconditions, data is currently moved from the large storage device to theremote storage device at a rate of 10 Mbits/sec. During such non-idealthroughput conditions, data backup and/or replication can take hours,days, or even weeks to complete via the wide area network.

Although conventional data storage techniques, for example, compute thesignature of data of each storage element of a storage device to assistreplication and/or backup of the storage device, such techniques requirecalculating and/or communicating the data signature of each storageelement of the storage device during a backup and/or replication of thestorage device—consuming time, consuming network bandwidth, consumingprocessing resources, etc.

The above-described deficiencies of today's data storage environmentsand related technologies are merely intended to provide an overview ofsome of the problems of conventional technology, and are not intended tobe exhaustive. Other problems with the state of the art, andcorresponding benefits of some of the various non-limiting embodimentsdescribed herein, may become further apparent upon review of thefollowing detailed description.

SUMMARY

The following presents a simplified summary to provide a basicunderstanding of some aspects described herein. This summary is not anextensive overview of the disclosed subject matter. It is not intendedto identify key or critical elements of the disclosed subject matter, ordelineate the scope of the subject disclosure. Its sole purpose is topresent some concepts of the disclosed subject matter in a simplifiedform as a prelude to the more detailed description presented later.

To correct for the above identified deficiencies of today's data storageenvironments and other drawbacks of conventional storage environments,various systems, methods, and apparatus described herein utilize one ormore storage records included in an intelligent data storage medium.

For example, a storage medium can include a write component configuredto receive data; and write one or more portions of the data to a storageblock of the storage medium; and a signature component configured tocreate a record within the storage medium; and update at least one partof the record corresponding to the storage block based on the one ormore portions of the data.

In another example, a method can include storing data in one or morestorage blocks of a storage medium; maintaining, by the storage medium,a record within the storage medium corresponding to the one or morestorage blocks; and updating, by the storage medium, the record based onthe maintaining.

In yet another example, an apparatus can include means for storing datain a storage device; means for maintaining, by the storage device, arecord within the storage device corresponding to the data; and meansfor updating, by the storage device, the record based on the means forthe maintaining.

In one example, a method can include copying one or more storage blocksfrom a storage medium to another storage medium; iteratively receiving,from the storage medium, one or more records during the copying; anditeratively updating the copying of the one or more storage blocks basedon the one or more records.

In another example, a system can include an application componentconfigured to request a storage medium to transmit records correspondingto one or more storage blocks of the storage medium via a communicationsprotocol; compare, via a comparison, a record of the records with another record of the records; and determine whether at least one storageblock of the one or more storage blocks changed based on the comparison.Further, the system can include an interface component configured tointerface with the storage medium, based on the request, via at leastone of an in-band command set associated with the communicationsprotocol or an out-of-band command set associated with thecommunications protocol.

The following description and the annexed drawings set forth in detailcertain illustrative aspects of the disclosed subject matter. Theseaspects are indicative, however, of but a few of the various ways inwhich the principles of the innovation may be employed. The disclosedsubject matter is intended to include all such aspects and theirequivalents. Other advantages and distinctive features of the disclosedsubject matter will become apparent from the following detaileddescription of the innovation when considered in conjunction with thedrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive embodiments of the subject disclosureare described with reference to the following figures, wherein likereference numerals refer to like parts throughout the various viewsunless otherwise specified.

FIG. 1 illustrates a block diagram of a storage medium, in accordancewith an embodiment.

FIG. 2 illustrates a block diagram of a storage medium associated withone or more records, in accordance with an embodiment.

FIG. 3 illustrates another block diagram associated with a storagemedium, in accordance with an embodiment.

FIG. 4 illustrates a storage related environment, in accordance with anembodiment.

FIG. 5 illustrates another storage related environment, in accordancewith an embodiment.

FIG. 6 illustrates a storage medium including a time component, inaccordance with an embodiment.

FIG. 7 illustrates another storage medium including a time component, inaccordance with an embodiment.

FIG. 8 illustrates yet another storage medium including a timecomponent, in accordance with an embodiment.

FIG. 9 illustrates a record including a signature of multiplesignatures, in accordance with an embodiment.

FIG. 10 illustrates a storage medium including a command component, inaccordance with an embodiment.

FIG. 11 illustrates a command component, in accordance with anembodiment.

FIG. 12 illustrates another command component, in accordance with anembodiment.

FIG. 13 illustrates a storage medium including a configurationcomponent, in accordance with an embodiment.

FIG. 14 illustrates a storage related entity, in accordance with anembodiment.

FIGS. 15-19 illustrate various processes associated with one or morestorage mediums, in accordance with an embodiment.

FIGS. 20-23 illustrate various processes associated with one or morestorage related entities, in accordance with an embodiment.

FIG. 24 illustrates a block diagram of a computing system operable toexecute the disclosed systems and methods, in accordance with anembodiment.

DETAILED DESCRIPTION

Various non-limiting embodiments of systems, methods, and apparatuspresented herein utilize one or more storage records included in anintelligent data storage medium.

In the following description, numerous specific details are set forth toprovide a thorough understanding of the embodiments. One skilled in therelevant art will recognize, however, that the techniques describedherein can be practiced without one or more of the specific details, orwith other methods, components, materials, etc. In other instances,well-known structures, materials, or operations are not shown ordescribed in detail to avoid obscuring certain aspects.

Reference throughout this specification to “one embodiment,” or “anembodiment,” means that a particular feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment. Thus, the appearances of the phrase “in oneembodiment,” or “in an embodiment,” in various places throughout thisspecification are not necessarily all referring to the same embodiment.Furthermore, the particular features, structures, or characteristics maybe combined in any suitable manner in one or more embodiments.

As utilized herein, terms “component,” “system,” “interface,” and thelike are intended to refer to a computer-related entity, hardware,software (e.g., in execution), and/or firmware. For example, a componentcan be a processor, a process running on a processor, an object, anexecutable, a program, a storage device, and/or a computer. By way ofillustration, an application running on a server and the server can be acomponent. One or more components can reside within a process, and acomponent can be localized on one computer and/or distributed betweentwo or more computers.

Further, these components can execute from various computer readablemedia having various data structures stored thereon. The components cancommunicate via local and/or remote processes such as in accordance witha signal having one or more data packets (e.g., data from one componentinteracting with another component in a local system, distributedsystem, and/or across a network, e.g., the Internet, a local areanetwork, a wide area network, etc. with other systems via the signal).

As another example, a component can be an apparatus with specificfunctionality provided by mechanical parts operated by electric orelectronic circuitry; the electric or electronic circuitry can beoperated by a software application or a firmware application executed byone or more processors; the one or more processors can be internal orexternal to the apparatus and can execute at least a part of thesoftware or firmware application. As yet another example, a componentcan be an apparatus that provides specific functionality throughelectronic components without mechanical parts; the electroniccomponents can include one or more processors therein to executesoftware and/or firmware that confer(s), at least in part, thefunctionality of the electronic components. In an aspect, a componentcan emulate an electronic component via a virtual machine, e.g., withina cloud computing system.

The word “exemplary” and/or “demonstrative” is used herein to meanserving as an example, instance, or illustration. For the avoidance ofdoubt, the subject matter disclosed herein is not limited by suchexamples. In addition, any aspect or design described herein as“exemplary” and/or “demonstrative” is not necessarily to be construed aspreferred or advantageous over other aspects or designs, nor is it meantto preclude equivalent exemplary structures and techniques known tothose of ordinary skill in the art. Furthermore, to the extent that theterms “includes,” “has,” “contains,” and other similar words are used ineither the detailed description or the claims, such terms are intendedto be inclusive—in a manner similar to the term “comprising” as an opentransition word—without precluding any additional or other elements.

Artificial intelligence based systems, e.g., utilizing explicitly and/orimplicitly trained classifiers, can be employed in connection withperforming inference and/or probabilistic determinations and/orstatistical-based determinations as in accordance with one or moreaspects of the disclosed subject matter as described herein. Forexample, an artificial intelligence system can be used, via signaturecomponent 120 (see below), to automatically update record(s) of astorage system and/or automatically calculate signature(s) of storageblock(s) associated with the record(s), e.g., to enable de-duplicationof the storage block(s).

As used herein, the term “infer” or “inference” refers generally to theprocess of reasoning about, or inferring states of, the system,environment, user, and/or intent from a set of observations as capturedvia events and/or data. Captured data and events can include user data,device data, environment data, data from sensors, sensor data,application data, implicit data, explicit data, etc. Inference can beemployed to identify a specific context or action, or can generate aprobability distribution over states of interest based on aconsideration of data and events, for example.

Inference can also refer to techniques employed for composinghigher-level events from a set of events and/or data. Such inferenceresults in the construction of new events or actions from a set ofobserved events and/or stored event data, whether the events arecorrelated in close temporal proximity, and whether the events and datacome from one or several event and data sources. Various classificationschemes and/or systems (e.g., support vector machines, neural networks,expert systems, Bayesian belief networks, fuzzy logic, and data fusionengines) can be employed in connection with performing automatic and/orinferred action in connection with the disclosed subject matter.

In addition, the disclosed subject matter can be implemented as amethod, apparatus, or article of manufacture using standard programmingand/or engineering techniques to produce software, firmware, hardware,or any combination thereof to control a computer to implement thedisclosed subject matter. The term “article of manufacture” as usedherein is intended to encompass a computer program accessible from anycomputer-readable device, computer-readable carrier, orcomputer-readable media. For example, computer-readable media caninclude, but are not limited to, a magnetic storage device, e.g., harddisk; floppy disk; magnetic strip(s); an optical disk (e.g., compactdisk (CD), a digital video disc (DVD), a Blu-ray Disc™ (BD)); a smartcard; a flash memory device (e.g., card, stick, key drive); and/or avirtual device that emulates a storage device and/or any of the abovecomputer-readable media.

Although conventional data storage techniques remotely replicate and/orback up data of a storage device, such techniques impact user experiencenegatively, e.g., under non-ideal data throughput conditions associatedwith one or more networks coupled to the storage device. Further,although conventional data storage techniques compute data signatures toassist storage device replication and/or backup, such techniques requirecalculating and/or communicating the data signature of each storageelement of the storage device during a backup and/or a replication ofthe storage device.

As described above, conventional data storage techniques reduce userexperience by consuming time, network bandwidth, and/or processingresources, e.g., by calculating and/or communicating data signatures ofeach data block of a storage device during a backup and/or replicationof the storage device. Compared to such technology, various systems,methods, and apparatus described herein in various embodiments canimprove user experience(s) by utilizing one or more storage recordsincluded in an intelligent data storage medium.

Referring now to FIG. 1, a block diagram of a storage medium 100 isillustrated, in accordance with an embodiment. Aspects of storage medium100, and systems, networks, other apparatus, and processes explainedherein can constitute machine-executable instructions embodied withinmachine(s), e.g., embodied in one or more computer readable mediums (ormedia) associated with one or more machines. Such instructions, whenexecuted by the one or more machines, e.g., computer(s), computingdevice(s), virtual machine(s), etc. can cause the machine(s) to performthe operations described.

Additionally, the systems and processes explained herein can be embodiedwithin hardware, such as an application specific integrated circuit(ASIC) or the like. Further, the order in which some or all of theprocess blocks appear in each process should not be deemed limiting.Rather, it should be understood by a person of ordinary skill in the arthaving the benefit of the instant disclosure that some of the processblocks can be executed in a variety of orders not illustrated.

Storage medium 100 can include a write component 110 and signaturecomponent 120. Furthermore, storage medium 100 can include variouscomputer-based storage technologies including, e.g., a Small ComputerSystem Interface (SCSI), which is a peripheral, peer-to-peer interfacethat can be used, e.g., in personal computer (PC) server systems; aSerial Storage Architecture (SSA); a SCSI-over-Fiber Channel Protocol;Serial Attached SCSI (SAS); an Internet SCSI (iSCSI), which is anInternet Protocol (IP) based storage networking standard for linkingdata storage facilities and/or entities; virtual storage, e.g.,associated with virtual machines of a cloud computing system; at leastone solid state disk (SSD) device; etc.

In an aspect, storage medium 100 can include virtual hard disk device(VHD) file(s), physical SCSI device(s), Serial Advanced TechnologyAttachment (SATA) device(s), SAS device(s), and/or SSD device(s). Inanother aspect, storage medium 100 can employ such device(s) and/orvirtual disk device(s), e.g., utilizing SCSI, iSCSI, Fibre Channel (FC),SCSI-over-Fiber Channel, SSA, AT-Attachment interface (ATA), ATA overEthernet (AoE), other Storage Area Network (SAN) protocol(s), etc.

In yet another aspect, storage medium 100 can receive information and/ordata, e.g., via write component 110, via query component 310 (seebelow); transmit data, e.g., via query component 310 (see below); ortransmit/receive data within, e.g., a cloud computing system, a remotestorage system, a storage appliance, a storage network, etc. viafront-end port(s), e.g., Ethernet port(s), a SATA computer bus, a SCSIinterface, an iSCSI interface, a SAS interface, an FC interface, an ATAinterface, an AoE interface, etc. For example, storage medium 100 canutilize an iSCSI interface to receive and transmit data over local areanetwork(s) (LAN(s)), wide area network(s) (WAN(s)), and/or the Internet;and can enable location-independent data storage and retrieval.

Under iSCSI protocol, clients (or initiators), can send SCSI commands toSCSI storage device(s) (or target(s)), e.g., storage medium 100. Assuch, the SCSI storage device can be located on or within remoteservers. Furthermore, iSCSI can be used to consolidate computer storageinto data center storage arrays, while enabling, for example, host(s),database server(s), web server(s), computational server(s), etc. toappear as locally-attached resources, e.g., acting as virtual machineswithin a cloud computing system. For example, storage system 100 can beincluded within a cloud computing system, e.g., implemented as a virtualmachine of the cloud computing system, implemented as a solid statestorage device referenced by the cloud computing system, etc.

In one aspect, write component 110 can be configured to write one ormore portions of the data to a storage block (not shown) of storagemedium 100. The storage block can include at least one bit and bepartitioned into various size blocks, e.g., of one or more bytes, etc.Further, signature component 120 can be configured to create a record(not shown) within storage medium 100. For example, the record caninclude a one-dimensional array, a multi-dimensional array, an index, afile, a database, etc. forming part of storage medium 100. Moreover,signature component 120 can be configured to update at least one part ofthe record corresponding to the storage block of storage medium 100based on the one or more portions of data stored in the storage block,e.g., via write component 110.

In an aspect, signature component 120 can atomically update the at leastone part of the record after a write operation, e.g., afterwriting/storing one or more portions of data to/in the storage block,for example, regardless of whether content of the storage block changedbased on the write operation. In one aspect, signature component 120 caninclude a monitor component (not shown) that can determine whether oneor more portions of data were stored in the storage block. In anotheraspect, the monitor component can determine whether content of thestorage block changed as a function of a write performed on the storageblock, e.g., based on whether the at least one part of the recordchanged as a result of atomically updating the at least one part of therecord. In yet another aspect, signature component 120 can update the atleast one part of the record, e.g., a bitmap, by setting or clearing abit of the bitmap if data is written to, or stored in, a storage blockcorresponding to the bit of the bitmap. In yet another aspect, signaturecomponent 120 can set or clear the bit of the bitmap if content of thestorage block changed as a function of a write performed on the storageblock.

For example, in an aspect illustrated by FIG. 2, storage medium 210 caninclude write component 110 and signature component 120 (both notshown), and a record 220 including a bitmap 230, or one-dimensionalarray, which includes at least one bit associated with each storageblock of storage medium 210. As illustrated by FIG. 2, bits 235 and 237of bitmap 230 have been set to a logic 1 via signature component 120;indicating data was written to/stored in storage block 250 and storageblock 260 of storage blocks 240, respectively. In another aspect (notshown), signature component 120 can clear a bit of bitmap 230, e.g., setthe bit to a logic 0, to indicate data was written to/stored in astorage block of storage blocks 240.

In other aspect(s), signature component 120 can indicate data was storedin a storage block of storage blocks 240 by setting an associated bit inbitmap 230 to a logic 0. Further, signature component 120 can indicatedata was stored in the storage block by setting the bit to a logic 1. Asdescribed below, a cloud computing system, a remote storage system, astorage appliance, a storage network, etc. can use a record, e.g.,bitmap 230, to determine whether to transfer and/or replace data from/toa storage medium, e.g., storage medium 210, during a backup procedure, areplication procedure, an antivirus scanning procedure, etc.

Referring now to FIGS. 3-5, a storage medium 300, a storage medium 520(included in a cloud storage provider/backup service 510), and a remotestorage medium 530 can include write component 110, signature component120, and an query component 310. Correspondingly, query component 310can be configured to receive, e.g., via front-end port(s) (see above), arequest from and/or within a storage related entity, e.g., a remotecomputer/backup device 410, a cloud storage provider/backup service 420,a storage medium 520, a remote storage medium 530, a storage relatedentity 1400 (see below), etc. In an aspect, the request can include arequest to transmit the record, e.g., record 220, of a storage medium,e.g., storage medium 100, 210, 300, 520, 530, etc. to the storagerelated entity. Further, query component 310 can be configured totransmit the record to the storage related entity based on the request.

As described above, data throughput of a storage device, and/or anassociated interface coupled to the storage device, can limit a rate atwhich the storage device can be backed-up and/or replicated. To correctfor these and other deficiencies of conventional storage techniques,storage medium(s) 100, 210, 300, 520, 530, etc. can, e.g., limit thetransfer of data during backup and/or replication procedures bymaintaining one or more records, e.g., record 220, indicating whetherone or more blocks of data of an associated storage medium have been“touched,” changed, and/or written to, e.g., via write component 110.Accordingly, a storage related entity, e.g., 410, 420, 510, 1400 (seebelow), etc. can query, at different times, a storage medium, e.g., 100,210, 300, 520, 530, etc. to request the storage medium to transmit,e.g., via query component 310, one or more records associated with oneor more blocks of data of the storage medium.

For example, the storage related entity can be associated with asoftware application, a hardware application, a vendor, etc. and the oneor more records can be associated with different software applications,hardware applications, vendors, etc. Further, the storage related entitycan determine which storage blocks have been touched, changed, and/orwritten to, based on record(s) received from the storage medium thatis/are associated with the storage related entity. For example, thestorage related entity can request a transfer—during a backup procedure,a replication procedure, an antivirus scanning procedure, etc.associated with the query—of storage blocks determined to have beentouched, changed, and/or written to before the backup procedure, thereplication procedure, the antivirus scanning procedure, etc. wasinitiated, e.g., resulting in conservation of valuable bandwidth duringsuch procedures.

Further, as described above, conventional data storage techniques canrequire calculating and/or communicating a data signature of eachstorage element of a storage device during backup and/or replication ofthe storage device, e.g., consuming time, consuming network bandwidth,consuming processing resources, etc. To correct for these and otherdeficiencies of conventional storage techniques, storage medium(s) 100,210, 300, 520, 530, etc. can, e.g., improve data throughput and/orreduce loading of storage related entity computational resources bycalculating data signatures of storage blocks of the storage medium(s).As such, signature component 120 can be configured to calculate asignature of a storage block of storage medium 100 based on one or moreportions of the data. For example, signature component 120 can beconfigured to calculate the signature of the storage block utilizing atleast one of a hash algorithm, a message digest algorithm, a secure hashalgorithm (SHA), an SHA-1, an SHA-2, a message-digest algorithm 5 (MD5),etc. computed over the one or more portions of the data. In an aspect,signature component 120 can be configured to atomically calculate andstore, e.g., in one or more records, the signature of the storage blockcorresponding to write component 110 writing and/or storing informationto/in the storage block.

Moreover, signature component 120 can be configured to store thesignature in one or more records, e.g., record 220, of storage medium100, 210, 300, 520, 530, etc. In one aspect (not shown), the one or morerecords can include a map, e.g., a one-dimensional array, amulti-dimensional array, a table, a file, a database, etc. of one ormore signatures, or block signature(s), e.g., a map of block signatures,calculated via signature component 120—each signature corresponding to astorage block of storage medium 100, 210, 300, 520, 530, etc. As such, astorage related entity, e.g., 410, 420, 510, 1400 (see below), etc. canquery a storage medium, e.g., 100, 210, 300, 520, 530, etc. at differenttimes—requesting the storage medium to transmit one or more mapsassociated with the storage related entity during each query.

Accordingly, the storage related entity can determine which storageblocks were touched, changed, and/or written to—between consecutivequeries—by determining which signatures of the map changed between theconsecutive queries. As such, the storage related entity can request atransfer, e.g., during a backup procedure, a replication procedure, anantivirus scanning procedure, etc. associated with the query of storageblocks determined to have been touched, changed, and/or written tobefore such procedure was initiated, e.g., resulting in conservation ofvaluable network bandwidth and/or storage related entity computingresources during backup, replication, antivirus scanning, etc.procedure(s).

Referring now to FIG. 6, a storage medium 600 including a time component610 is illustrated, in accordance with an embodiment. Time component 610can be configured to update a record with a time corresponding to awrite, e.g., via write component 110, of one or more portions of data toa storage block of storage medium 600. In one aspect (see, e.g., FIG.7), the record can include a log indicating a time that a specificstorage block was touched, changed, and/or written to, e.g., via writecomponent 110. For example, the log can associate an address of a block,or an offset of the block from another storage block and/or referencepoint of storage medium 600, with a time that the block was touched,changed, and/or written to, e.g., via write component 110.

As illustrated by FIG. 7, a record 720 of a storage medium 710 caninclude a log 730, in accordance with an embodiment. Log 730 can be achronological listing associating times t₁-t₅ with writes made, e.g.,via write component 110, to storage blocks A-E of storage blocks 740. Inan aspect illustrated by FIG. 7, storage block offsets from a commonreference point and/or a storage block of storage medium 710 can beincluded in log 730, which can associate storage blocks A-E with timest₁-t₅. In another aspect, log 730 can include a chronological listing oftouches and/or changes made to block(s) of storage blocks 740.Accordingly, various applications can utilize log 730, e.g., forenabling effective restart of disrupted storage backup procedure(s),replication procedure(s), antivirus scanning procedure(s), etc.

For example, if backup/replication/antivirus-scanning of a storagemedium, e.g., storage medium 600, 710, etc. is interrupted, e.g., due toa natural disaster and/or an equipment failure, a storage relatedentity, e.g., 410, 420, 510, 1400 (see below), etc. can query thestorage medium after the backup/replication was interrupted, e.g., byrequesting the storage medium to transmit a log, e.g., log 730,including a chronological list identifying writes made to one or moreblocks of the storage medium. As such, the storage related entity canresume backup/replication/antivirus-scanning, e.g., at a time prior to alast entry of the log.

In another aspect, the storage related entity can query the storagemedium, e.g., 100, 210, 300, 520, 530, 600, etc. at differenttimes—requesting the storage medium to transmit one or more logs, e.g.,log 730, associated with the storage related entity during each query.Accordingly, the storage related entity can determine which storageblocks were touched, changed, and/or written to between consecutivequeries by comparing logs returned by the consecutive queries. As such,the storage related entity can request a transfer, during a backupand/or replication procedure associated with the query, of storageblocks determined to have been touched, changed, and/or written tobefore the backup and/or replication procedure was initiated, e.g.,resulting in conservation of valuable network bandwidth and/or storagerelated entity computing resources during backup and/or replicationprocedures.

In yet another aspect, a storage medium, e.g., storage medium 600, 710,810 (see below), etc. can be configured to calculate a signature of astorage block, e.g., of storage blocks 740. In one aspect, the storagemedium can be configured to calculate the signature of the storage blockutilizing at least one of a hash algorithm, a message digest algorithm,a secure hash algorithm (SHA), an SHA-1, an SHA-2, a message-digestalgorithm 5 (MD5), etc. computed over one or more portions of datastored in the storage block. Further, the storage medium can beconfigured to store, e.g., via write component 110, the signature in arecord, e.g., a log of block signatures, associating the signature withthe storage block. For example, in an embodiment illustrated by FIG. 8,a record 820 of a storage medium 810 can include a log 830 that can be achronological listing associating times t₁-t₅ with writes made, e.g.,via write component 110, to storage blocks A-E of storage blocks 840,and associating the writes with signatures of related storage blocks,e.g., hash_(A)-hash_(E).

As such, a storage related entity, e.g., 410, 420, 510, 1400 (seebelow), etc. can query the storage medium at different times—requestingthe storage medium to transmit one or more logs, e.g., log 830,associated with the storage related entity during each query.Accordingly, the storage related entity can determine which storageblocks were touched, changed, and/or written to between consecutivequeries by comparing logs returned by the consecutive queries, e.g., byutilizing and/or comparing signatures associated with storage blocks.Thus, the storage related entity can request a transfer, during a backupand/or replication procedure associated with the query, of storageblocks determined to have been touched, changed, and/or written tobefore the backup and/or replication procedure was initiated.

In another aspect (not illustrated), a storage medium, e.g., storagemedium 600, 710, 810, etc. can be configured to employ de-duplicationbased on one or more records maintained by the storage medium. Forexample, a monitor component (see above) can monitor a record includingsignatures of storage blocks of the storage medium. When data stored indifferent storage blocks is the same, signatures stored in differentrecords associated with the different storage blocks are equivalent.Correspondingly, the storage medium can monitor, e.g., via the monitorcomponent, signatures stored in different records to determine whethertwo or more storage blocks associated with the different records storeequivalent information. As such, the storage medium can utilize apointer to reference a common storage block without storing duplicativedata in the storage medium. For example, the storage medium can conservestorage space, e.g., cache memory, etc. by storing one copy ofduplicative storage block data in the cache memory, and associatingpointers that reference the one copy with other storage blocksassociated with the duplicative data—conserving storage space by storingpointers to reference common data instead of storing duplicative copiesof the common data.

Now referring to FIG. 9, records 900 are illustrated, in accordance withan embodiment. In an aspect, a storage medium, e.g., storage medium 600,710, 810, etc. can be configured to calculate a signature based on thesignatures of multiple storage blocks. In one aspect, the storage mediumcan be configured to calculate the signature of the signatures utilizingat least one of a hash algorithm, a message digest algorithm, a securehash algorithm (SHA), an SHA-1, an SHA-2, a message-digest algorithm 5(MD5), etc. computed over the signatures. For example, the storagemedium can be configured to calculate the signature of a signature,e.g., a hash of a hash, utilizing SHA-1. Further, the storage medium canbe configured to store, e.g., via write component 110, the hash of thehash in a record. In an aspect illustrated by FIG. 9, the storage mediumcan be configured to calculate a signature, e.g., hash key 910, overmultiple signatures, e.g., hash keys 920, associated with storage blocksof the storage medium.

For example, the storage medium can be configured to calculate a SHA256-byte hash key 915 over multiple hash keys 925, e.g., over 16 SHA256-byte hash keys, e.g., hash_(A), hash_(B), etc. associated with 64k-byte storage blocks of the storage medium and stored in log 830 ofrecord 820. Moreover, the storage medium can be configured to store hashkey 915 in a record 905. Accordingly, a storage related entity, e.g.,410, 420, 510, 1400 (see below), etc. can determine which storage blockswere touched, changed, and/or written to—between consecutive queries by(1) determining which signatures of record 905 changed between theconsecutive queries and (2) determining which signatures ofcorresponding signatures 925 changed between the consecutive queries. Inthis way, maintaining a signature of multiple signatures in a record canenable a storage related entity to more efficiently determine whetherstorage blocks of the storage medium have been touched, changed, and/orwritten to between queries.

Referring again to FIG. 3, in one aspect, query component 310 can beconfigured to receive, e.g., via front-end port(s) (see above), arequest from and/or within a storage related entity, e.g., a remotecomputer/backup device 410, a cloud storage provider/backup service 420,a storage medium 520, a remote storage medium 530, etc. including arequest to transmit one or more attributes of a storage medium, e.g.,100, 210, 300, 520, 530, 600, 710, etc. to the storage related entity.Further, query component 310 can be configured to transmit the one ormore attributes of the storage medium to the storage related entitybased on the request. The storage related entity can utilize theattributes via, e.g., a backup procedure, a replication procedure, anantivirus-scanning procedure, etc. to configure such procedure(s) toeffectively interface with the storage medium.

For example, the one or more attributes of the storage medium caninclude information associated with at least one of: a type of dataintelligence of the storage medium, e.g., whether the storage mediumsupports and/or maintains a bitmap, a map of block signatures, a log, ora log of block signatures; a size of storage block(s) of the storagemedium, e.g., a fixed and/or logical block size by which raw device datais divided into and addressed within the storage medium; one or morehash, or message digest, algorithm(s), e.g., SHA-1, SHA-2, MD5, etc.utilized by the storage medium; a maximum hash/message digest/signaturelength; a minimum hash/message digest/signature length; one or moreversion(s) of the hash/message digest/signature algorithm(s); a record,e.g., a log, a map, a map of block signatures, a map of a map (e.g.,hash map of a hash map table, record 905, etc.); a size of the record; ahash key/digest/signature for a specified storage block; a number ofhash keys, e.g., 925, referred to by another hash key, e.g., 915; aportion of the record based on a specified range of the record; or aportion of the storage block(s) based on a specified range of thestorage block(s).

Referring now to FIG. 10, a storage medium 1000 including a commandcomponent 1010 is illustrated, in accordance with an embodiment. Commandcomponent 1010 can be configured to at least one of transmit informationfrom storage medium 1000 or receive information at storage medium 1000,e.g., via write component 110 and/or query component 310, based on anextension of an in-band device command set (not shown), e.g., a commandset associated with extensions of standard commands of at least one of aSCSI protocol, an iSCSI protocol, an FC protocol, a SCSI-over-FiberChannel protocol, an SSA protocol, an ATA protocol, an ATA over Ethernet(AoE) protocol, other SAN protocol(s), etc. For example, storage medium1000 can receive data via write component 110, receive requests viaquery component 310, transmit records via query component 310, andtransmit attributes via query component 310 utilizing extension(s) of anin-band device command set associated with one or more of the SANprotocols.

In aspect illustrated by FIG. 11, a command component 1110 can include acommand set extension component 1120, in accordance with an embodiment.As illustrated, command set extension component 1120 can interface with,or extend, a SCSI command set 1130, e.g., enabling storage medium 1100to receive data via write component 110, receive requests via querycomponent 310, transmit records via query component 310, and transmitattributes via query component 310 utilizing extension(s) of SCSIcommand set 1130. In other aspects (not shown), command set extensioncomponent 1120 can interface with, or extend, one or more of the SANprotocols described above. In this way, storage medium 1100 can improveassociated storage related entity interfaces and/or reduce storagerelated entity computing resources, e.g., since associated hardwarevendors are not required to standardize their out-of-band proprietarynetwork interfaces to perform, e.g., storage medium operations describedherein via write component 110, via query component 310, via querycomponent 310, etc.

In another aspect, command component 1010 can be configured to at leastone of transmit information from storage medium 1000 or receiveinformation at storage medium 1000, e.g., via write component 110 and/orquery component 310, based on a standardized, out-of-band device commandset (not shown). For example, command component 1010 can be configuredto transmit and/or receive information via the out-of-band command setbased on a standardized application programming interface (API) (notshown) implemented via a storage related entity, e.g., remotecomputer/backup device 410, cloud storage provider/backup service 420,cloud storage provider/backup service 510, storage medium 520, remotestorage medium 530, 1400 (see below), etc. communicating with storagemedium 1000.

For example, in an aspect illustrated by FIG. 12, a command component1210 can include an out-of-band interface component 1220 that caninterface with an out-of-band command set 1230 via the standardized API.As such, the standardized API can specify an identification of a storagemedium (e.g., 1000, 1430, etc.), e.g., a mode page descriptor if thestorage medium is configured as a SCSI device. Further, the standardizedAPI can specify context of processes/methods associated with the storagemedium—enabling a storage related entity to interface with the storagemedium utilizing the standardized API.

In another aspect, an API implemented via a storage related entity,e.g., 410, 420, 510, 1400 (see below), etc. can be associated with anin-band and/or an out-of-band command set and used by the storagerelated entity to at least one of: return information, e.g., attributes,of a storage medium including: information of record(s), e.g., 720, 820,905, etc. stored and/or maintained in the storage medium; hashalgorithm(s) utilized by the storage medium; version(s) of such hashalgorithms; a size of records(s), hash maps, and/or logs associated withthe storage medium; a size (or length) of hash key(s)/messagedigest(s)/signature(s) utilized by the storage medium; a size of hashedstorage blocks; a number of signatures referred to by another signaturevia the storage medium, e.g., via a hash of hashes; or a state of thestorage medium, e.g., “normal”, “busy”, “initializing”, “offline”,“error”, etc.

In yet another aspect, the API implemented via the storage relatedentity can be associated with an in-band and/or an out-of-band commandset, and used by the storage related entity to return at least one of:storage block size(s) supported by a storage medium, e.g., 100, 210,300, 520, 530, 600, 710, 810, 1000, 1300, 1430, etc.; hash/messagedigest/signature algorithm(s) supported by the storage medium; maximumdigest/signature length; minimum digest/signature length; a hashkey/message digest/signature of a specified storage block of the storagemedium; hash key(s)/message digest(s)/signature(s) for all storageblocks of the storage medium; a number of signatures referred to byanother signature via the storage medium, e.g., via a hash of hashes; asize of record(s), hash maps, and/or logs of the storage medium; or hashkey(s)/message digest(s)/signature(s) for each storage block in aspecified range of storage blocks of the storage medium.

Now referring to FIG. 13, a storage medium 1300 including aconfiguration component 1310 is illustrated, according to an embodiment.Configuration component 1310 can be configured to receive aconfiguration request, e.g., from a storage related entity (see above).Further, configuration component 1310 can be configured to change aconfiguration of storage medium 1300 based on the configuration request.For example, the storage related entity can utilize an API, which can beassociated with an in-band or an out-of-band command set, to querystorage medium 1300 attributes, capabilities, and/or information (seeabove). As such, the storage related entity can change the configurationof storage medium 1300 by communicating the configuration request tostorage medium 1300, e.g., via an API associated with the in-band or theout-of band command set. For example, the storage related entity canselect among hash/message digest/signature algorithm(s) supported bystorage medium 1300, based on the configuration request.

FIG. 14 illustrates a storage related entity 1400, in accordance with anembodiment. Storage related entity 1400 can include an applicationcomponent 1410 and an interface component 1420. Further, storage relatedentity 1400, e.g., 410, 420, 510, etc. can control, interface with, etc.a storage medium 1430, e.g., 100, 210, 300, 520, 530, 600, 710, 810,1000, 1300, etc. For example, application component 1410 can include oneor more applications related to performing at least one of the followingoperations: a backup of storage medium 1430; a replication of storagemedium 1430; a fault recovery of storage medium 1430; or antivirus-basedoperations related to storage medium 1430. As such, applicationcomponent 1410 can utilize one or more records stored via storage medium1430 to perform such operations.

For example, application component 1410 can include a backup applicationthat can iteratively request storage medium 1430 to transmit one or morerecords, e.g., bitmap(s), log(s), etc. to storage related entity 1400after backup application initiates a backup operation of storage medium1430. The backup application can iteratively compare one or more partsof the one or more records, based on the transmission requests, duringone or more backup procedures to determine whether one or more portionsof data associated with storage block(s) related to the one or morerecords changed between requests to transmit the one or more records,e.g., while the backup application performed the backup operation.

In one example, application component 1410 can include a replicationapplication that can enable storage related entity 1400 to copy and/ormaintain a copy of storage medium 1430. The replication application canrequest storage medium 1430 to transmit one or more records, e.g.,bitmap(s), log(s), etc. to storage related entity 1400, and can identifywhether one or more portions of data associated with storage block(s)related to the one or more records changed, based on comparing the oneor more records with previous records(s).

In another example, application component 1410 can include a faultrecovery application that can enable storage related entity 1400 to“repair” one or more portions of data stored in storage medium 1430. Thefault recovery application can request storage medium 1430 to transmitone or more records, e.g., bitmap(s), log(s), etc. to storage relatedentity 1400, and can identify whether one or more portions of dataassociated with storage block(s) related to the one or more records were“damaged”, e.g., by comparing signatures, e.g., hash, etc. of the one ormore records with valid signatures associated with data stored in otherstorage mediums, other locations, etc. corresponding to the one or moreportions of the data.

In yet another example, application component 1410 can include anantivirus application that can identify “suspect” data of storage medium1430 “infected” by malware, etc. The antivirus application can requeststorage medium 1430 to transmit one or more records, e.g., bitmap(s),log(s), etc. to storage related entity 1400, and can identify whetherone or more portions of data associated with storage block(s) related tothe one or more records were infected, e.g., by comparing signatures,e.g., hash, etc. of the one or more records with valid signaturesassociated with data stored in other storage mediums, other locations,etc. corresponding to the one or more portions of the data.

In one aspect, application component 1410 can perform such operationsvia a cloud computing system. As such, storage related entity 1400 caninterface with storage medium 1430 via at least one of the Internet, anetwork protocol, or one of various communication protocols discussedabove. Further, storage related entity 1400 can interface with storagemedium 1430 utilizing interface component 1420, which can enable storagemedium 1430 to perform one or more functions, e.g., related to thevarious API(s) discussed above. For example, in one aspect, interfacecomponent 1420 can couple storage related entity 1400 with storagemedium 1430 based on an API associated with an in-band command set (seeabove). In another aspect, interface component 1420 can couple storagerelated entity 1400 with storage medium 1430 based on an API associatedwith an out-of-band command set (see above).

FIGS. 15-23 illustrate methodologies in accordance with the disclosedsubject matter. For simplicity of explanation, the methodologies aredepicted and described as a series of acts. It is to be understood andappreciated that the subject innovation is not limited by the actsillustrated and/or by the order of acts. For example, acts can occur invarious orders and/or concurrently, and with other acts not presented ordescribed herein. Furthermore, not all illustrated acts may be requiredto implement the methodologies in accordance with the disclosed subjectmatter. In addition, those skilled in the art will understand andappreciate that the methodologies could alternatively be represented asa series of interrelated states via a state diagram or events.Additionally, it should be further appreciated that the methodologiesdisclosed hereinafter and throughout this specification are capable ofbeing stored on an article of manufacture to facilitate transporting andtransferring such methodologies to computers. The term article ofmanufacture, as used herein, is intended to encompass a computer programaccessible from any computer-readable device, carrier, or media.

Referring now to FIG. 15, a process 1500 associated with a storagemedium is illustrated, in accordance with an embodiment. At 1510, datacan be received at the storage medium, e.g., 100, 210, 300, 520, 530,600, 710, 810, 1000, 1300, 1430, etc. via a storage related entity (seeabove). The storage medium can write, copy, and/or record the data toone or more storage blocks of the storage medium at 1520, e.g., viawrite component 110 (see above). At 1530, a record can be created withinand/or associated with the storage medium, e.g., via signature component120 (see above). One or more parts of the record corresponding to theone or more storage blocks can be updated at 1540, e.g., via signaturecomponent 120 (see above). At 1550, the storage medium can transmit therecord, e.g., to the storage related entity, based on a request receivedfrom the storage related entity.

FIG. 16 illustrates another process (1600) associated with a storagemedium, in accordance with an embodiment. At 1610, and referencing 1520and 1540 (see above), one or more parts of the record corresponding tothe one or more storage blocks can be updated with a time correspondingto the write, copy, and/or recording of the data, e.g., via timecomponent 610 (see above). Further, a signature of the data can becalculated at 1620, e.g., via signature component 120 (see above). At1630, the signature can be stored in the one or more parts of therecord, e.g., via signature component 120, so as to correspond to thetime.

FIG. 17 illustrates yet another process (1700) associated with a storagemedium, e.g., 100, 210, 300, 520, 530, 600, 710, 810, 1000, 1300, 1430,etc. in accordance with an embodiment. At 1710, data can be stored inone or more storage blocks of the storage medium, e.g., via writecomponent 110. The storage medium can maintain a record within thestorage medium corresponding to the one or more storage blocks at 1720,e.g., via signature component 110. In an aspect, the one or more storageblocks can include one or more bits and/or one or more bytes. At 1730,the storage medium can update the record based on maintenance performedon the record (at 1720) by the storage medium.

FIG. 18 illustrates a process 1800 for monitoring whether content ofstorage block(s) of a storage medium, e.g., 100, 210, 300, 520, 530,600, 710, 810, 1000, 1300, 1430, etc. changed, in accordance with anembodiment. At 1810, data can be stored in one or more storage blocks ofthe storage medium, e.g., via write component 110. At 1820, the storagemedium can monitor, e.g., via a monitor component (see above), whethercontent of the storage block(s) changed as a function of data stored inthe storage block(s). In one aspect, the monitor component can record,e.g., temporarily, “old” data stored in the storage block(s) at one ormore other locations before “new” data is written to such storageblock(s)—the monitor component can compare the old data with the newdata to determine whether content of the storage block(s) changed. At1830, the storage medium can update the one or more records, e.g., basedon whether monitor component determined content of storage block(s)associated with the one or more records changed.

Now referring to FIGS. 19 and 20, processes 1900 and 2000 associatedwith replicating a storage medium, e.g., 100, 210, 300, 520, 530, 600,710, 810, 1000, 1300, 1430, etc. are illustrated, in accordance with anembodiment. At 1910, a current signature record and a historicalsignature record associated with the storage medium can be obtained, ifavailable, e.g., to begin initial replication of the storage medium.Signatures, e.g., an older signature of the historical signature recordand a newer signature of the current signature record, of data of astorage block to be copied can be compared at 1920. At 1930, it can bedetermined whether the older signature is the same as the newersignature. If it is determined at 1930 that the older signature is thesame as the newer signature, then the storage medium can communicate theolder/newer signature to a remote storage related entity, e.g., 410,420, 510, 1400, etc. at 1940; otherwise, if the newer signature isdifferent than the older signature, then the storage medium cancommunicate data of the storage block and the newer signature to theremote storage related entity at 1950. As such, the storage medium canpreserve valuable communication bandwidth by enabling the remote storagerelated entity to copy previously received data associated with thenewer signature without communicating the data between the storagemedium and the remote storage related entity.

Process 1900 can continue from 1940/1950 to 1960, at which it can bedetermined whether the initial replication of the storage medium iscomplete. If it is determined that the initial replication is complete,process 1900 can continue to 2010; otherwise process 1900 can continueto 1920 to continue the initial replication of the storage medium. Nowreferring to FIG. 20, a storage related entity, e.g., 410, 420, 510,1400, etc. can iteratively receive from the storage medium, e.g., basedon request(s) directed to the storage medium, one or more records (seeabove) associated with storage block(s) of the storage medium at 2010.

At 2020, the storage related entity can compare one or more recordsreceived at 2010 with previously received, e.g., stored, record(s).Process 2000 can determine, at 2030, whether the records are different,and proceed to 2040 to recopy storage block(s) associated withdifferences in the records; else, process 2000 can return to 2010.Process 2000 can continue from 2040 to 2050, at which it can bedetermined whether copying, e.g., replication, duplication, etc. iscomplete. If copying is complete, process 2000 can end at 2060, elsereturn to 2010.

FIG. 21 illustrates another process (2100) associated with a storagerelated entity, e.g., 410, 420, 510, 1400, etc., in accordance with anembodiment. At 2110, the storage related entity can copy storageblock(s) from a storage medium to another location, e.g., storagemedium, storage related entity, etc. At 2120, the storage related entitycan iteratively receive from the storage medium one or more recordsduring the copying of storage block(s). At 2130, the storage relatedentity can iteratively save one or more copies of the one or morerecords, and iteratively compare the one or more copies with otherrecord(s) at 2140. At 2150, the storage related entity can iterativelyupdate copying of the storage blocks based on comparing the one or morecopies with the other record(s).

FIG. 22 illustrates yet another process (2200) associated with a storagerelated entity, e.g., 410, 420, 510, 1400, etc., in accordance with anembodiment. At 2210, the storage related entity can request, e.g., viaapplication component 1410, a storage medium, e.g., 100, 210, 300, 520,530, 600, 710, 800, 900, 1000, 1100, 1430, etc. to transmit recordscorresponding to one or more storage blocks of the storage medium, e.g.,via a communications protocol (see above). The storage related entitycan compare a record of the records with an other record of the recordsat 2220. At 2230, the storage related entity can determine whether atleast one storage block of the one or more storage blocks changed basedon the comparison. In an aspect, the storage related entity caninterface with the storage medium, e.g., via interface component 1420,via at least one of an in-band command set (see above) associated withthe communications protocol or an out-of-band command set (see above)associated with the communications protocol.

FIG. 23 illustrates a process 2300 associated with a virtual machine, inaccordance with an embodiment. At 2310, a storage related entity canquery whether a storage medium has intelligence associated withmaintaining records, e.g., whether the storage medium maintains one ormore records associated with storage blocks of the storage medium. At2320, the storage related entity can query whether the storage mediumincludes a custom metadata region associated with one or more virtualmachines if the storage medium maintains the one or more records. At2330, the storage related entity can read data and/or information fromthe metadata region. Further, the storage related entity can recover,rebuild, and/or reconnect the virtual machine associated with the custommetadata region based on the data and/or the information at 2340. In anaspect, a format for metadata, data, and/or the information can includean Open Virtualization Format (OVF) associated with virtual machine(s).

As it employed in the subject specification, the term “processor” canrefer to substantially any computing processing unit or devicecomprising, but not limited to comprising, single-core processors;single-processors with software multithread execution capability;multi-core processors; multi-core processors with software multithreadexecution capability; multi-core processors with hardware multithreadtechnology; parallel platforms; and parallel platforms with distributedshared memory. Additionally, a processor can refer to an integratedcircuit, an application specific integrated circuit (ASIC), a digitalsignal processor (DSP), a field programmable gate array (FPGA), aprogrammable logic controller (PLC), a complex programmable logic device(CPLD), a discrete gate or transistor logic, discrete hardwarecomponents, or any combination thereof designed to perform the functionsand/or processes described herein. Processors can exploit nano-scalearchitectures such as, but not limited to, molecular and quantum-dotbased transistors, switches and gates, in order to optimize space usageor enhance performance of mobile devices. A processor may also beimplemented as a combination of computing processing units.

In the subject specification, terms such as “store,” “data store,” “datastorage,” “database,” “storage medium,” and substantially any otherinformation storage component relevant to operation and functionality ofa component and/or process, refer to “memory components,” or entitiesembodied in a “memory,” or components comprising the memory. It will beappreciated that the memory components described herein can be eithervolatile memory or nonvolatile memory, or can include both volatile andnonvolatile memory.

By way of illustration, and not limitation, nonvolatile memory, forexample, can be included in storage systems described above,non-volatile memory 2422 (see below), disk storage 2424 (see below), andmemory storage 2446 (see below). Further, nonvolatile memory can beincluded in read only memory (ROM), programmable ROM (PROM),electrically programmable ROM (EPROM), electrically erasable ROM(EEPROM), or flash memory. Volatile memory can include random accessmemory (RAM), which acts as external cache memory. By way ofillustration and not limitation, RAM is available in many forms such assynchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM),double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), SynchlinkDRAM (SLDRAM), and direct Rambus RAM (DRRAM). Additionally, thedisclosed memory components of systems or methods herein are intended tocomprise, without being limited to comprising, these and any othersuitable types of memory.

In order to provide a context for the various aspects of the disclosedsubject matter, FIG. 24, and the following discussion, are intended toprovide a brief, general description of a suitable environment in whichthe various aspects of the disclosed subject matter can be implemented,e.g., various processes associated with FIGS. 1-23. While the subjectmatter has been described above in the general context ofcomputer-executable instructions of a computer program that runs on acomputer and/or computers, those skilled in the art will recognize thatthe subject innovation also can be implemented in combination with otherprogram modules. Generally, program modules include routines, programs,components, data structures, etc. that perform particular tasks and/orimplement particular abstract data types.

Moreover, those skilled in the art will appreciate that the inventivesystems can be practiced with other computer system configurations,including single-processor or multiprocessor computer systems,mini-computing devices, mainframe computers, as well as personalcomputers, hand-held computing devices (e.g., PDA, phone, watch),microprocessor-based or programmable consumer or industrial electronics,and the like. The illustrated aspects can also be practiced indistributed computing environments where tasks are performed by remoteprocessing devices that are linked through a communications network;however, some if not all aspects of the subject disclosure can bepracticed on stand-alone computers. In a distributed computingenvironment, program modules can be located in both local and remotememory storage devices.

With reference to FIG. 24, a block diagram of a computing system 2400operable to execute the disclosed systems and methods is illustrated, inaccordance with an embodiment. Computer 2412 includes a processing unit2414, a system memory 2416, and a system bus 2418. System bus 2418couples system components including, but not limited to, system memory2416 to processing unit 2414. Processing unit 2414 can be any of variousavailable processors. Dual microprocessors and other multiprocessorarchitectures also can be employed as processing unit 2414.

System bus 2418 can be any of several types of bus structure(s)including a memory bus or a memory controller, a peripheral bus or anexternal bus, and/or a local bus using any variety of available busarchitectures including, but not limited to, Industrial StandardArchitecture (ISA), Micro-Channel Architecture (MSA), Extended ISA(EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB),Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus(USB), Advanced Graphics Port (AGP), Personal Computer Memory CardInternational Association bus (PCMCIA), Firewire (IEEE 1194), and SmallComputer Systems Interface (SCSI).

System memory 2416 includes volatile memory 2420 and nonvolatile memory2422. A basic input/output system (BIOS), containing routines totransfer information between elements within computer 2412, such asduring start-up, can be stored in nonvolatile memory 2422. By way ofillustration, and not limitation, nonvolatile memory 2422 can includeROM, PROM, EPROM, EEPROM, or flash memory. Volatile memory 2420 includesRAM, which acts as external cache memory. By way of illustration and notlimitation, RAM is available in many forms such as SRAM, dynamic RAM(DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM),enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), Rambus direct RAM(RDRAM), direct Rambus dynamic RAM (DRDRAM), and Rambus dynamic RAM(RDRAM).

Computer 2412 can also include removable/non-removable,volatile/non-volatile computer storage media, networked attached storage(NAS), e.g., SAN storage, etc. FIG. 24 illustrates, for example, diskstorage 2424. Disk storage 2424 includes, but is not limited to, deviceslike a magnetic disk drive, floppy disk drive, tape drive, Jaz drive,Zip drive, LS-100 drive, flash memory card, or memory stick. Inaddition, disk storage 2424 can include storage media separately or incombination with other storage media including, but not limited to, anoptical disk drive such as a compact disk ROM device (CD-ROM), CDrecordable drive (CD-R Drive), CD rewritable drive (CD-RW Drive) or adigital versatile disk ROM drive (DVD-ROM). To facilitate connection ofthe disk storage devices 2424 to system bus 2418, a removable ornon-removable interface is typically used, such as interface 2426.

It is to be appreciated that FIG. 24 describes software that acts as anintermediary between users and computer resources described in suitableoperating environment 2400. Such software includes an operating system2428. Operating system 2428, which can be stored on disk storage 2424,acts to control and allocate resources of computer 2412. Systemapplications 2430 take advantage of the management of resources byoperating system 2428 through program modules 2432 and program data 2434stored either in system memory 2416 or on disk storage 2424. It is to beappreciated that the disclosed subject matter can be implemented withvarious operating systems or combinations of operating systems.

A user can enter commands or information into computer 2412 throughinput device(s) 2436. Input devices 2436 include, but are not limitedto, a pointing device such as a mouse, trackball, stylus, touch pad,keyboard, microphone, joystick, game pad, satellite dish, scanner, TVtuner card, digital camera, digital video camera, web camera, and thelike. These and other input devices connect to processing unit 2414through system bus 2418 via interface port(s) 2438. Interface port(s)2438 include, for example, a serial port, a parallel port, a game port,and a universal serial bus (USB). Output device(s) 2440 use some of thesame type of ports as input device(s) 2436.

Thus, for example, a USB port can be used to provide input to computer2412 and to output information from computer 2412 to an output device2440. Output adapter 2442 is provided to illustrate that there are someoutput devices 2440 like monitors, speakers, and printers, among otheroutput devices 2440, which use special adapters. Output adapters 2442include, by way of illustration and not limitation, video and soundcards that provide means of connection between output device 2440 andsystem bus 2418. It should be noted that other devices and/or systems ofdevices provide both input and output capabilities such as remotecomputer(s) 2444.

Computer 2412 can operate in a networked environment using logicalconnections to one or more remote computers, such as remote computer(s)2444. Remote computer(s) 2444 can be a personal computer, a server, arouter, a network PC, a workstation, a microprocessor based appliance, apeer device, or other common network node and the like, and typicallyincludes many or all of the elements described relative to computer2412.

For purposes of brevity, only a memory storage device 2446 isillustrated with remote computer(s) 2444. Remote computer(s) 2444 islogically connected to computer 2412 through a network interface 2448and then physically connected via communication connection 2450. Networkinterface 2448 encompasses wire and/or wireless communication networkssuch as local-area networks (LAN) and wide-area networks (WAN). LANtechnologies include Fiber Distributed Data Interface (FDDI), CopperDistributed Data Interface (CDDI), Ethernet, Token Ring and the like.WAN technologies include, but are not limited to, point-to-point links,circuit switching networks like Integrated Services Digital Networks(ISDN) and variations thereon, packet switching networks, and DigitalSubscriber Lines (DSL).

Communication connection(s) 2450 refer(s) to hardware/software employedto connect network interface 2448 to bus 2418. While communicationconnection 2450 is shown for illustrative clarity inside computer 2412,it can also be external to computer 2412. The hardware/software forconnection to network interface 2448 can include, for example, internaland external technologies such as modems, including regular telephonegrade modems, cable modems and DSL modems, ISDN adapters, and Ethernetcards.

The above description of illustrated embodiments of the subjectdisclosure, including what is described in the Abstract, is not intendedto be exhaustive or to limit the disclosed embodiments to the preciseforms disclosed. While specific embodiments and examples are describedherein for illustrative purposes, various modifications are possiblethat are considered within the scope of such embodiments and examples,as those skilled in the relevant art can recognize.

In this regard, while the disclosed subject matter has been described inconnection with various embodiments and corresponding Figures, whereapplicable, it is to be understood that other similar embodiments can beused or modifications and additions can be made to the describedembodiments for performing the same, similar, alternative, or substitutefunction of the disclosed subject matter without deviating therefrom.Therefore, the disclosed subject matter should not be limited to anysingle embodiment described herein, but rather should be construed inbreadth and scope in accordance with the appended claims below.

What is claimed is:
 1. A system, comprising: a processor; and a memorythat stores executable instructions that, when executed by theprocessor, facilitate performance of operations, comprising: sendingrecord requests directed to a storage medium; receiving, based on therecord requests, respective records from the storage medium that havebeen generated by the storage medium, wherein the respective recordsrepresent data that has been stored in a storage block of the storagemedium; and determining, based on the respective records, whether thedata has changed.
 2. The system of clam 1, wherein the operationsfurther comprise: in response to determining that the data has changed,sending a storage request comprising a previous version of the datadirected to the storage medium to facilitate storing the previousversion of the data in the storage block.
 3. The system of claim 1,wherein the sending comprises: sending, via a replication application,the record requests directed to the storage medium, wherein a recordrequest of the record requests comprises an application programminginterface (API) request for the storage medium to send a bitmapcomprising a bit representing whether the data has changed.
 4. Thesystem of claim 1, wherein the sending comprises: sending, via areplication application, the record requests directed to the storagemedium, wherein a record request of the record requests comprises anapplication programming interface (API) request for the storage mediumto send a hash map comprising a hash key representing whether the datahas changed.
 5. The system of claim 4, wherein a record of therespective records comprises a time corresponding to storage of the hashmap in the storage medium.
 6. The system of claim 1, wherein theoperations further comprise: sending information directed to the storagemedium based on an in-band command set associated with at least one of asmall computer system interface (SCSI) protocol, an Internet SCSI(iSCSI) protocol, a fibre channel (FC) protocol, a SCSI over FCprotocol, a serial storage architecture protocol, an advanced technology(AT)-attachment interface (ATA) protocol, an ATA over ethernet (AoE)protocol, or a storage area network protocol.
 7. The system of claim 1,wherein the operations further comprise: sending an attribute requestdirected to the storage medium; and receiving one or attributes of thestorage medium based on the attribute request.
 8. The system of claim 7,wherein the one or more attributes comprise information that identifiesat least one of: a size of the storage block, one or more hashalgorithms utilized by the storage medium, a maximum hash digest length,a minimum hash digest length, a version of the one or more hashalgorithms, a property of a record of the respective records, a size ofthe record, a data block size associated with the record, a hash key forthe storage block, a record portion of the record based on a specifiedrange of the record, or whether the storage medium supports a map.
 9. Amethod, comprising: in response to sending, by a device comprising aprocessor, record requests directed to a storage medium, receiving, bythe device, respective records from the storage medium representing datathat has been stored in a storage block of the storage medium; and basedon the respective records, determining, by the device, whether the datahas been modified.
 10. The method of claim 9, further comprising: inresponse to determining that the data has been modified, sending, by thedevice, a storage request comprising a prior version of the datadirected to the storage medium to facilitate storing the prior versionof the data in the storage block.
 11. The method of claim 9, wherein thesending the record requests comprises: sending, via a storagereplication application, a record request of the record requestsdirected to the storage medium, the record request comprising anapplication programming interface (API) request for the storage mediumto send a bitmap comprising a bit representing whether the data has beenmodified.
 12. The method of claim 9, wherein the sending the recordrequests comprises: sending, via a storage replication application, arecord request of the record requests directed to the storage medium,the record requests comprising an application programming interface(API) request for the storage medium to send a hash map comprising ahash key representing whether the data has been modified.
 13. The methodof claim 12, wherein a record of the respective records comprises a timecorresponding to storage of the hash map in the storage medium.
 14. Themethod of claim 9, further comprising: sending, by the device,information directed to the storage medium based on an in-band commandset associated with at least one of a small computer system interface(SCSI) protocol, an Internet SCSI (iSCSI) protocol, a fibre channel (FC)protocol, a SCSI over FC protocol, a serial storage architectureprotocol, an advanced technology (AT)-attachment interface (ATA)protocol, an ATA over ethernet (AoE) protocol, or a storage area networkprotocol.
 15. The method of claim 9, further comprising: sending, by thedevice, an attribute request directed to the storage medium; andreceiving, by the device, one or attributes of the storage medium basedon the attribute request.
 16. The method of claim 9, wherein thereceiving the one or more attributes comprises: receiving informationthat identifies at least one of: a size of the storage block, one ormore hash algorithms utilized by the storage medium, a maximum hashdigest length, a minimum hash digest length, a version of the one ormore hash algorithms, a property of a record of the respective records,a size of the record, a data block size associated with the record, ahash key for the storage block, a record portion of the record based ona specified range of the record, or whether the storage medium supportsa map.
 17. A machine-readable storage medium, comprising executableinstructions that, when executed by a processor, facilitate performanceof operations, comprising: in response to sending a first record requestto a storage medium for a first record that has been generated by thestorage medium, receiving the first record from the storage medium,wherein the first record represents a first version of data that hasbeen stored in a storage block of the storage medium; in response tosending a second record request to the storage for a second record thathas been generated by the storage medium, receiving the second recordfrom the storage medium, wherein the second record represents a secondversion of data that has been stored in the storage block; anddetermining, based on the first record and the second record, whetherthe data has changed.
 18. The machine-readable storage medium of claim17, wherein the operations further comprise: in response to determiningthat the data has changed, sending a storage request comprising aprevious version of the data directed to the storage medium tofacilitate storing the previous version of the data in the storageblock.
 19. The machine-readable storage medium of claim 17, wherein thefirst record request and the second record request comprise applicationprogramming interface (API) requests for the storage medium to sendrespective bitmaps comprising respective bits representing whether thedata has changed.
 20. The machine-readable storage medium of claim 17,wherein the first record request and the second record request compriseapplication programming interface (API) requests for the storage mediumto send respective hash maps comprising respective hash keysrepresenting whether the data has changed.